// 1794. [滑窗]最长的指定瑕疵度的元音子串
// https://oj.rnd.huawei.com/problems/1794/details
// 滑动窗口，
//定义：开头和结尾都是元音字母（aeiouAEIOU）的字符串为 元音字符串
//，其中混杂的非元音字母数量为其 瑕疵度 。比如: “a” 、
//“aa”是元音字符串，其瑕疵度都为0 “aiur”不是元音字符串（结尾不是元音字符）
//“abira”是元音字符串，其瑕疵度为2
//给定一个字符串，请找出指定瑕疵度的最长元音字符子串，并输出其长度，
//如果找不到满足条件的元音字符子串，输出0。
//子串：字符串中任意个连续的字符组成的子序列称为该字符串的子串。
//输入首行输入是一个整数，表示预期的瑕疵度flaw，取值范围 [0, 65535]。
//接下来一行是一个仅由字符a-z和A-Z组成的字符串，字符串长度 (0, 65535]。
//输出为一个整数，代表满足条件的元音字符子串的长度。
//输入 0
// asdbuiodevauufgh
//输出 3
//满足条件的最长元音字符子串有两个，分别为uio和auu，长度为3。
//输入 2
// aeueo
//输出 0
//没有满足条件的元音字符子串，输出0
//输入 1
// aabeebuu
//输出 5
//满足条件的最长元音字符子串有两个，分别为aabee和eebuu，长度为5
#include <iostream>
#include <set>
#include <string>
#include <vector>
using namespace std;
bool isVowel(char c) {
  std::string vowels = "aeiouAEIOU";
  size_t pos = vowels.find(c);
  if (pos == std::string::npos) {
    return false;
  }
  return true;
}
//【首尾元音,中间瑕疵】
int GetLongestFlawedVowelSubstrLen(const size_t flaw, const string& input) {
  int maxLen = 0;
  int curFlaw = 0;
  int lenTotal = (int)input.length();
  for (int left = 0, right = 0; left < lenTotal && right < lenTotal; right++) {
    if (!isVowel(input.at(right))) {
      curFlaw++;
      continue;
    }
    while (!isVowel(input.at(left)) && left < right) {
      left++;
      curFlaw--;
    }
    if (curFlaw == flaw) {
      maxLen = max(maxLen, right - left + 1);
    } else if (curFlaw < flaw) {
      continue;
    } else if (curFlaw > flaw) {
      while (isVowel(input.at(left)) && left < right) {
        left++;
      }
      left++;
      curFlaw--;
      right--;  // 下次循环不移动右针
    }
  }
  return maxLen;
}
int main() {
  size_t flaw = 0;
  cin >> flaw;
  string input = "asdbuiodevauufgh";
  cin >> input;
  cout << GetLongestFlawedVowelSubstrLen(flaw, input) << endl;
  return 0;
}